home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / NSIS 2.41 / nsis-2.41-setup.exe / Examples / FileFunc.nsi < prev    next >
Encoding:
Text File  |  2008-01-27  |  19.4 KB  |  753 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          File Functions
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "File Functions"
  9. OutFile "FileFunc.exe"
  10. Caption "$(^Name)"
  11. XPStyle on
  12. RequestExecutionLevel user
  13.  
  14. !include "WinMessages.nsh"
  15. !include "FileFunc.nsh"
  16.  
  17. !insertmacro Locate
  18. !insertmacro GetSize
  19. !insertmacro DriveSpace
  20. !insertmacro GetDrives
  21. !insertmacro GetTime
  22. !insertmacro GetFileAttributes
  23. !insertmacro GetFileVersion
  24. !insertmacro GetExeName
  25. !insertmacro GetExePath
  26. !insertmacro GetParameters
  27. !insertmacro GetOptions
  28. !insertmacro GetRoot
  29. !insertmacro GetParent
  30. !insertmacro GetFileName
  31. !insertmacro GetBaseName
  32. !insertmacro GetFileExt
  33. !insertmacro BannerTrimPath
  34. !insertmacro DirState
  35. !insertmacro RefreshShellIcons
  36.  
  37. Var INI
  38. Var HWND
  39. Var STATE
  40. Var FUNCTION
  41. Var LOCATE1
  42. Var LOCATE2
  43. Var GETSIZE1
  44. Var GETSIZE2
  45. Var GETSIZE3
  46. Var GETSIZE4
  47. Var GETSIZE5
  48. Var GETSIZE6
  49. Var DRIVESPACE1
  50. Var DRIVESPACE2
  51. Var GETDRIVES1
  52. Var GETTIME1
  53. Var GETTIME2
  54. Var GETFILEATTRIBUTES1
  55. Var GETFILEATTRIBUTES2
  56. Var GETFILEVERSION1
  57. Var GETOPTIONS1
  58. Var GETOPTIONS2
  59. Var GETROOT1
  60. Var GETPARENT1
  61. Var GETFILENAME1
  62. Var GETBASENAME1
  63. Var GETFILEEXT1
  64. Var BANNERTRIMPATH1
  65. Var BANNERTRIMPATH2
  66. Var DIRSTATE1
  67.  
  68. Page Custom ShowCustom LeaveCustom
  69.  
  70. Function ShowCustom
  71.     InstallOptions::initDialog /NOUNLOAD "$INI"
  72.     Pop $hwnd
  73.     GetDlgItem $1 $HWND 1201
  74.     ShowWindow $1 0
  75.     GetDlgItem $1 $HWND 1202
  76.     ShowWindow $1 0
  77.     GetDlgItem $1 $HWND 1206
  78.     EnableWindow $1 0
  79.     SendMessage $1 ${WM_ENABLE} 1 0
  80.     StrCpy $LOCATE1 $DOCUMENTS
  81.     StrCpy $LOCATE2 '/L=FD /M=*.* /S=0B /G=1 /B=0'
  82.     StrCpy $GETSIZE1 '$WINDIR'
  83.     StrCpy $GETSIZE2 '/M=Explorer.exe /S=0K /G=0'
  84.     StrCpy $GETSIZE3 '$PROGRAMFILES\Common Files'
  85.     StrCpy $GETSIZE4 '/S=0M'
  86.     StrCpy $GETSIZE5 '$WINDIR'
  87.     StrCpy $GETSIZE6 '/G=0'
  88.     StrCpy $DRIVESPACE1 'C:\'
  89.     StrCpy $DRIVESPACE2 '/D=F /S=M'
  90.     StrCpy $GETDRIVES1 'FDD+CDROM'
  91.     StrCpy $GETTIME1 '$WINDIR\Explorer.exe'
  92.     StrCpy $GETTIME2 'C'
  93.     StrCpy $GETFILEATTRIBUTES1 'C:\IO.SYS'
  94.     StrCpy $GETFILEATTRIBUTES2 'ALL'
  95.     StrCpy $GETFILEVERSION1 '$WINDIR\Explorer.exe'
  96.     StrCpy $GETOPTIONS1 '/SILENT=yes /INSTDIR="$PROGRAMFILES\Common Files"'
  97.     StrCpy $GETOPTIONS2 '/INSTDIR='
  98.     StrCpy $GETROOT1 'C:\path\file.dll'
  99.     StrCpy $GETPARENT1 'C:\path\file.dll'
  100.     StrCpy $GETFILENAME1 'C:\path\file.dll'
  101.     StrCpy $GETBASENAME1 'C:\path\file.dll'
  102.     StrCpy $GETFILEEXT1 'C:\path\file.dll'
  103.     StrCpy $BANNERTRIMPATH1 'C:\Server\Documents\Terminal\license.htm'
  104.     StrCpy $BANNERTRIMPATH2 '34A'
  105.     StrCpy $DIRSTATE1 '$TEMP'
  106.  
  107.     GetDlgItem $1 $HWND 1203
  108.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1"
  109.     GetDlgItem $1 $HWND 1205
  110.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2"
  111.     InstallOptions::show
  112.     Pop $0
  113. FunctionEnd
  114.  
  115. Function LeaveCustom
  116.     ReadINIStr $STATE $INI "Field 1" "State"
  117.     ReadINIStr $R1 $INI "Field 2" "State"
  118.     ReadINIStr $R2 $INI "Field 3" "State"
  119.     ReadINIStr $R3 $INI "Field 4" "State"
  120.     ReadINIStr $R4 $INI "Field 5" "State"
  121.     ReadINIStr $0 $INI "Settings" "State"
  122.     StrCmp $0 6 view
  123.     StrCmp $0 0 Enter
  124.     goto main
  125.  
  126.     view:
  127.     StrCpy $0 '$$'
  128.     StrCpy $1 'n'
  129.     StrCpy $2 'r'
  130.     StrCmp $R4 "LocateCallback" 0 +3
  131.     StrCpy $R0 `Function LocateCallback$\r$\n    MessageBox MB_OKCANCEL '$0$$R9    "path\name"=[$$R9]$0\$1$0$$R8    "path"          =[$$R8]$0\$1$0$$R7    "name"        =[$$R7]$0\$1$0$$R6    "size"           =[$$R6]' IDOK +2$\r$\n    StrCpy $$R0 StopLocate$\r$\n$\r$\n    Push $$R0$\r$\nFunctionEnd`
  132.     goto send
  133.     StrCmp $R4 "GetDrivesCallback" 0 error
  134.     StrCpy $R0 `Function GetDrivesCallback$\r$\n    MessageBox MB_OKCANCEL '$0$$9    "drive letter"=[$$9]$0\$1$0$$8    "drive type" =[$$8]' IDOK +2$\r$\n    StrCpy $$R0 StopGetDrives$\r$\n    StrCpy $$R5 '$$R5$$9  [$$8 Drive]$$\$2$$\$1'$\r$\n$\r$\n    Push $$R0$\r$\nFunctionEnd`
  135.     goto send
  136.  
  137.     main:
  138.     StrCmp $FUNCTION '' DefaultSend
  139.     StrCmp $FUNCTION Locate 0 +4
  140.     StrCpy $LOCATE1 $R2
  141.     StrCpy $LOCATE2 $R3
  142.     goto DefaultSend
  143.     StrCmp $FUNCTION GetSize1 0 +4
  144.     StrCpy $GETSIZE1 $R2
  145.     StrCpy $GETSIZE2 $R3
  146.     goto DefaultSend
  147.     StrCmp $FUNCTION GetSize2 0 +4
  148.     StrCpy $GETSIZE3 $R2
  149.     StrCpy $GETSIZE4 $R3
  150.     goto DefaultSend
  151.     StrCmp $FUNCTION GetSize3 0 +4
  152.     StrCpy $GETSIZE5 $R2
  153.     StrCpy $GETSIZE6 $R3
  154.     goto DefaultSend
  155.     StrCmp $FUNCTION DriveSpace 0 +4
  156.     StrCpy $DRIVESPACE1 $R1
  157.     StrCpy $DRIVESPACE2 $R3
  158.     goto DefaultSend
  159.     StrCmp $FUNCTION GetDrives 0 +3
  160.     StrCpy $GETDRIVES1 $R1
  161.     goto DefaultSend
  162.     StrCmp $FUNCTION GetTime 0 +4
  163.     StrCpy $GETTIME1 $R1
  164.     StrCpy $GETTIME2 $R3
  165.     goto DefaultSend
  166.     StrCmp $FUNCTION GetFileAttributes 0 +4
  167.     StrCpy $GETFILEATTRIBUTES1 $R1
  168.     StrCpy $GETFILEATTRIBUTES2 $R3
  169.     goto DefaultSend
  170.     StrCmp $FUNCTION GetFileVersion 0 +3
  171.     StrCpy $GETFILEVERSION1 $R1
  172.     goto DefaultSend
  173.     StrCmp $FUNCTION GetOptions 0 +4
  174.     StrCpy $GETOPTIONS1 $R1
  175.     StrCpy $GETOPTIONS2 $R3
  176.     goto DefaultSend
  177.     StrCmp $FUNCTION GetRoot 0 +3
  178.     StrCpy $GETROOT1 $R1
  179.     goto DefaultSend
  180.     StrCmp $FUNCTION GetParent 0 +3
  181.     StrCpy $GETPARENT1 $R1
  182.     goto DefaultSend
  183.     StrCmp $FUNCTION GetFileName 0 +3
  184.     StrCpy $GETFILENAME1 $R1
  185.     goto DefaultSend
  186.     StrCmp $FUNCTION GetBaseName 0 +3
  187.     StrCpy $GETBASENAME1 $R1
  188.     goto DefaultSend
  189.     StrCmp $FUNCTION GetFileExt 0 +3
  190.     StrCpy $GETFILEEXT1 $R1
  191.     goto DefaultSend
  192.     StrCmp $FUNCTION BannerTrimPath 0 +4
  193.     StrCpy $BANNERTRIMPATH1 $R1
  194.     StrCpy $BANNERTRIMPATH2 $R3
  195.     goto DefaultSend
  196.     StrCmp $FUNCTION DirState 0 +2
  197.     StrCpy $DIRSTATE1 $R2
  198.  
  199.     DefaultSend:
  200.     GetDlgItem $1 $HWND 1201
  201.     EnableWindow $1 1
  202.     ShowWindow $1 0
  203.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  204.     GetDlgItem $1 $HWND 1202
  205.     EnableWindow $1 1
  206.     ShowWindow $1 0
  207.     GetDlgItem $1 $HWND 1203
  208.     EnableWindow $1 1
  209.     ShowWindow $1 0
  210.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  211.     GetDlgItem $1 $HWND 1204
  212.     EnableWindow $1 1
  213.     ShowWindow $1 0
  214.     GetDlgItem $1 $HWND 1205
  215.     EnableWindow $1 1
  216.     GetDlgItem $1 $HWND 1206
  217.     ShowWindow $1 0
  218.     EnableWindow $1 0
  219.     GetDlgItem $1 $HWND 1207
  220.     ShowWindow $1 0
  221.     GetDlgItem $1 $HWND 1208
  222.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  223.     GetDlgItem $1 $HWND 1209
  224.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  225.     GetDlgItem $1 $HWND 1210
  226.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  227.     GetDlgItem $1 $HWND 1211
  228.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  229.  
  230.     ReadINIStr $0 $INI "Field 1" "State"
  231.     StrCmp $0 "  1. Locate" 0 GetSize1Send
  232.     StrCpy $FUNCTION Locate
  233.     GetDlgItem $1 $HWND 1203
  234.     ShowWindow $1 1
  235.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE1"
  236.     GetDlgItem $1 $HWND 1204
  237.     ShowWindow $1 1
  238.     GetDlgItem $1 $HWND 1205
  239.     ShowWindow $1 1
  240.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$LOCATE2"
  241.     GetDlgItem $1 $HWND 1206
  242.     ShowWindow $1 1
  243.     SendMessage $1 ${WM_SETTEXT} 1 "STR:LocateCallback"
  244.     GetDlgItem $1 $HWND 1207
  245.     ShowWindow $1 1
  246.     GetDlgItem $1 $HWND 1209
  247.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Path"
  248.     GetDlgItem $1 $HWND 1210
  249.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  250.     GetDlgItem $1 $HWND 1211
  251.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  252.     abort
  253.  
  254.     GetSize1Send:
  255.     StrCmp $0 "  2. GetSize                 (file)" 0 GetSize2Send
  256.     StrCpy $FUNCTION 'GetSize1'
  257.     GetDlgItem $1 $HWND 1203
  258.     ShowWindow $1 1
  259.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE1"
  260.     GetDlgItem $1 $HWND 1204
  261.     ShowWindow $1 1
  262.     GetDlgItem $1 $HWND 1205
  263.     ShowWindow $1 1
  264.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE2"
  265.     GetDlgItem $1 $HWND 1209
  266.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  267.     GetDlgItem $1 $HWND 1210
  268.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  269.     Abort
  270.  
  271.     GetSize2Send:
  272.     StrCmp $0 "                                   (directory)" 0 GetSize3Send
  273.     StrCpy $FUNCTION 'GetSize2'
  274.     GetDlgItem $1 $HWND 1203
  275.     ShowWindow $1 1
  276.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE3"
  277.     GetDlgItem $1 $HWND 1204
  278.     ShowWindow $1 1
  279.     GetDlgItem $1 $HWND 1205
  280.     ShowWindow $1 1
  281.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE4"
  282.     GetDlgItem $1 $HWND 1209
  283.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  284.     GetDlgItem $1 $HWND 1210
  285.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  286.     Abort
  287.  
  288.     GetSize3Send:
  289.     StrCmp $0 "                                   (no size, no subdir)" 0 DriveSpaceSend
  290.     StrCpy $FUNCTION 'GetSize3'
  291.     GetDlgItem $1 $HWND 1203
  292.     ShowWindow $1 1
  293.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE5"
  294.     GetDlgItem $1 $HWND 1204
  295.     ShowWindow $1 1
  296.     GetDlgItem $1 $HWND 1205
  297.     ShowWindow $1 1
  298.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETSIZE6"
  299.     GetDlgItem $1 $HWND 1209
  300.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  301.     GetDlgItem $1 $HWND 1210
  302.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  303.     Abort
  304.  
  305.     DriveSpaceSend:
  306.     StrCmp $0 "  3. DriveSpace" 0 GetDrivesSend
  307.     StrCpy $FUNCTION DriveSpace
  308.     GetDlgItem $1 $HWND 1201
  309.     ShowWindow $1 1
  310.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE1"
  311.     GetDlgItem $1 $HWND 1202
  312.     ShowWindow $1 1
  313.     EnableWindow $1 0
  314.     GetDlgItem $1 $HWND 1205
  315.     ShowWindow $1 1
  316.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DRIVESPACE2"
  317.     GetDlgItem $1 $HWND 1206
  318.     ShowWindow $1 0
  319.     SendMessage $1 ${WM_SETTEXT} 1 "STR:"
  320.     GetDlgItem $1 $HWND 1207
  321.     ShowWindow $1 0
  322.     GetDlgItem $1 $HWND 1209
  323.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Drive"
  324.     GetDlgItem $1 $HWND 1210
  325.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Options"
  326.     abort
  327.  
  328.     GetDrivesSend:
  329.     StrCmp $0 "  4. GetDrives             (by type)" 0 GetDrives2Send
  330.     StrCpy $FUNCTION GetDrives
  331.     GetDlgItem $1 $HWND 1201
  332.     ShowWindow $1 1
  333.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETDRIVES1"
  334.     GetDlgItem $1 $HWND 1202
  335.     ShowWindow $1 1
  336.     EnableWindow $1 0
  337.     GetDlgItem $1 $HWND 1205
  338.     ShowWindow $1 0
  339.     GetDlgItem $1 $HWND 1206
  340.     ShowWindow $1 1
  341.     SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback"
  342.     GetDlgItem $1 $HWND 1207
  343.     ShowWindow $1 1
  344.     GetDlgItem $1 $HWND 1209
  345.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  346.     GetDlgItem $1 $HWND 1211
  347.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  348.     abort
  349.  
  350.     GetDrives2Send:
  351.     StrCmp $0 "                                   (all by letter)" 0 GetTime1Send
  352.     StrCpy $FUNCTION ''
  353.     GetDlgItem $1 $HWND 1201
  354.     ShowWindow $1 1
  355.     EnableWindow $1 0
  356.     SendMessage $1 ${WM_ENABLE} 1 0
  357.     SendMessage $1 ${WM_SETTEXT} 1 "STR:ALL"
  358.     GetDlgItem $1 $HWND 1202
  359.     ShowWindow $1 1
  360.     EnableWindow $1 0
  361.     GetDlgItem $1 $HWND 1205
  362.     ShowWindow $1 0
  363.     GetDlgItem $1 $HWND 1206
  364.     ShowWindow $1 1
  365.     SendMessage $1 ${WM_SETTEXT} 1 "STR:GetDrivesCallback"
  366.     GetDlgItem $1 $HWND 1207
  367.     ShowWindow $1 1
  368.     GetDlgItem $1 $HWND 1209
  369.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  370.     GetDlgItem $1 $HWND 1211
  371.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Function"
  372.     abort
  373.  
  374.     GetTime1Send:
  375.     StrCmp $0 "  5. GetTime                (local time)" 0 GetTime2Send
  376.     StrCpy $FUNCTION ''
  377.     GetDlgItem $1 $HWND 1201
  378.     ShowWindow $1 1
  379.     EnableWindow $1 0
  380.     SendMessage $1 ${WM_ENABLE} 1 0
  381.     GetDlgItem $1 $HWND 1202
  382.     ShowWindow $1 1
  383.     EnableWindow $1 0
  384.     GetDlgItem $1 $HWND 1205
  385.     ShowWindow $1 1
  386.     EnableWindow $1 1
  387.     SendMessage $1 ${WM_SETTEXT} 1 "STR:L"
  388.     GetDlgItem $1 $HWND 1210
  389.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  390.     Abort
  391.  
  392.     GetTime2Send:
  393.     StrCmp $0 "                                   (file time)" 0 GetFileAttributesSend
  394.     StrCpy $FUNCTION GetTime
  395.     GetDlgItem $1 $HWND 1201
  396.     ShowWindow $1 1
  397.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME1"
  398.     GetDlgItem $1 $HWND 1202
  399.     ShowWindow $1 1
  400.     GetDlgItem $1 $HWND 1205
  401.     ShowWindow $1 1
  402.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETTIME2"
  403.     GetDlgItem $1 $HWND 1209
  404.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  405.     GetDlgItem $1 $HWND 1210
  406.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  407.     Abort
  408.  
  409.     GetFileAttributesSend:
  410.     StrCmp $0 "  6. GetFileAttributes" 0 GetFileVersionSend
  411.     StrCpy $FUNCTION GetFileAttributes
  412.     GetDlgItem $1 $HWND 1201
  413.     ShowWindow $1 1
  414.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES1"
  415.     GetDlgItem $1 $HWND 1202
  416.     ShowWindow $1 1
  417.     GetDlgItem $1 $HWND 1205
  418.     ShowWindow $1 1
  419.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEATTRIBUTES2"
  420.     GetDlgItem $1 $HWND 1209
  421.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Path"
  422.     GetDlgItem $1 $HWND 1210
  423.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Attrib"
  424.     Abort
  425.  
  426.     GetFileVersionSend:
  427.     StrCmp $0 "  7. GetFileVersion" 0 GetCmdSend
  428.     StrCpy $FUNCTION GetFileVersion
  429.     GetDlgItem $1 $HWND 1201
  430.     ShowWindow $1 1
  431.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEVERSION1"
  432.     GetDlgItem $1 $HWND 1202
  433.     ShowWindow $1 1
  434.     GetDlgItem $1 $HWND 1205
  435.     ShowWindow $1 0
  436.     GetDlgItem $1 $HWND 1209
  437.     SendMessage $1 ${WM_SETTEXT} 1 "STR:File"
  438.     Abort
  439.  
  440.     GetCmdSend:
  441.     StrCmp $0 "  8. GetExeName" +3
  442.     StrCmp $0 "  9. GetExePath" +2
  443.     StrCmp $0 "10. GetParameters" 0 GetOptionsSend
  444.     StrCpy $FUNCTION ''
  445.     GetDlgItem $1 $HWND 1205
  446.     ShowWindow $1 0
  447.     Abort
  448.  
  449.     GetOptionsSend:
  450.     StrCmp $0 "11. GetOptions" 0 GetRootSend
  451.     StrCpy $FUNCTION GetOptions
  452.     GetDlgItem $1 $HWND 1201
  453.     ShowWindow $1 1
  454.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS1"
  455.     GetDlgItem $1 $HWND 1202
  456.     ShowWindow $1 1
  457.     EnableWindow $1 0
  458.     GetDlgItem $1 $HWND 1205
  459.     ShowWindow $1 1
  460.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETOPTIONS2"
  461.     GetDlgItem $1 $HWND 1209
  462.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Parameters"
  463.     GetDlgItem $1 $HWND 1210
  464.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  465.     Abort
  466.  
  467.     GetRootSend:
  468.     StrCmp $0 "12. GetRoot" 0 GetParentSend
  469.     StrCpy $FUNCTION GetRoot
  470.     GetDlgItem $1 $HWND 1201
  471.     ShowWindow $1 1
  472.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETROOT1"
  473.     GetDlgItem $1 $HWND 1202
  474.     ShowWindow $1 1
  475.     GetDlgItem $1 $HWND 1205
  476.     ShowWindow $1 0
  477.     GetDlgItem $1 $HWND 1209
  478.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FullPath"
  479.     Abort
  480.  
  481.     GetParentSend:
  482.     StrCmp $0 "13. GetParent" 0 GetFileNameSend
  483.     StrCpy $FUNCTION GetParent
  484.     GetDlgItem $1 $HWND 1201
  485.     ShowWindow $1 1
  486.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETPARENT1"
  487.     GetDlgItem $1 $HWND 1202
  488.     ShowWindow $1 1
  489.     GetDlgItem $1 $HWND 1205
  490.     ShowWindow $1 0
  491.     GetDlgItem $1 $HWND 1209
  492.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  493.     Abort
  494.  
  495.     GetFileNameSend:
  496.     StrCmp $0 "14. GetFileName" 0 GetBaseNameSend
  497.     StrCpy $FUNCTION GetFileName
  498.     GetDlgItem $1 $HWND 1201
  499.     ShowWindow $1 1
  500.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILENAME1"
  501.     GetDlgItem $1 $HWND 1202
  502.     ShowWindow $1 1
  503.     GetDlgItem $1 $HWND 1205
  504.     ShowWindow $1 0
  505.     GetDlgItem $1 $HWND 1209
  506.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  507.     Abort
  508.  
  509.     GetBaseNameSend:
  510.     StrCmp $0 "15. GetBaseName" 0 GetFileExtSend
  511.     StrCpy $FUNCTION GetBaseName
  512.     GetDlgItem $1 $HWND 1201
  513.     ShowWindow $1 1
  514.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETBASENAME1"
  515.     GetDlgItem $1 $HWND 1202
  516.     ShowWindow $1 1
  517.     GetDlgItem $1 $HWND 1205
  518.     ShowWindow $1 0
  519.     GetDlgItem $1 $HWND 1209
  520.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString"
  521.     Abort
  522.  
  523.     GetFileExtSend:
  524.     StrCmp $0 "16. GetFileExt" 0 BannerTrimPathSend
  525.     StrCpy $FUNCTION GetFileExt
  526.     GetDlgItem $1 $HWND 1201
  527.     ShowWindow $1 1
  528.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$GETFILEEXT1"
  529.     GetDlgItem $1 $HWND 1202
  530.     ShowWindow $1 1
  531.     GetDlgItem $1 $HWND 1205
  532.     ShowWindow $1 0
  533.     GetDlgItem $1 $HWND 1209
  534.     SendMessage $1 ${WM_SETTEXT} 1 "STR:FileString"
  535.     Abort
  536.  
  537.     BannerTrimPathSend:
  538.     StrCmp $0 "17. BannerTrimPath" 0 DirStateSend
  539.     StrCpy $FUNCTION BannerTrimPath
  540.     GetDlgItem $1 $HWND 1201
  541.     ShowWindow $1 1
  542.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH1"
  543.     GetDlgItem $1 $HWND 1202
  544.     ShowWindow $1 1
  545.     EnableWindow $1 0
  546.     GetDlgItem $1 $HWND 1205
  547.     ShowWindow $1 1
  548.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$BANNERTRIMPATH2"
  549.     GetDlgItem $1 $HWND 1209
  550.     SendMessage $1 ${WM_SETTEXT} 1 "STR:PathString"
  551.     GetDlgItem $1 $HWND 1210
  552.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Option"
  553.     Abort
  554.  
  555.     DirStateSend:
  556.     StrCmp $0 "18. DirState" 0 RefreshShellIconsSend
  557.     StrCpy $FUNCTION DirState
  558.     GetDlgItem $1 $HWND 1203
  559.     ShowWindow $1 1
  560.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$DIRSTATE1"
  561.     GetDlgItem $1 $HWND 1204
  562.     ShowWindow $1 1
  563.     GetDlgItem $1 $HWND 1205
  564.     ShowWindow $1 0
  565.     GetDlgItem $1 $HWND 1209
  566.     SendMessage $1 ${WM_SETTEXT} 1 "STR:Directory"
  567.     Abort
  568.  
  569.     RefreshShellIconsSend:
  570.     StrCmp $0 "19. RefreshShellIcons" 0 Abort
  571.     StrCpy $FUNCTION ''
  572.     GetDlgItem $1 $HWND 1205
  573.     ShowWindow $1 0
  574.  
  575.     Abort:
  576.     Abort
  577.  
  578. ;=Enter=
  579.     Enter:
  580.     StrCpy $R0 ''
  581.     StrCpy $R5 ''
  582.  
  583.     StrCmp $STATE "  1. Locate" Locate
  584.     StrCmp $STATE "  2. GetSize                 (file)" GetSize
  585.     StrCmp $STATE "                                   (directory)" GetSize
  586.     StrCmp $STATE "                                   (no size, no subdir)" GetSize
  587.     StrCmp $STATE "  3. DriveSpace" DriveSpace
  588.     StrCmp $STATE "  4. GetDrives             (by type)" GetDrives
  589.     StrCmp $STATE "                                   (all by letter)" GetDrives
  590.     StrCmp $STATE "  5. GetTime                (local time)" GetTime
  591.     StrCmp $STATE "                                   (file time)" GetTime
  592.     StrCmp $STATE "  6. GetFileAttributes" GetFileAttributes
  593.     StrCmp $STATE "  7. GetFileVersion" GetFileVersion
  594.     StrCmp $STATE "  8. GetExeName" GetExeName
  595.     StrCmp $STATE "  9. GetExePath" GetExePath
  596.     StrCmp $STATE "10. GetParameters" GetParameters
  597.     StrCmp $STATE "11. GetOptions" GetOptions
  598.     StrCmp $STATE "12. GetRoot" GetRoot
  599.     StrCmp $STATE "13. GetParent" GetParent
  600.     StrCmp $STATE "14. GetFileName" GetFileName
  601.     StrCmp $STATE "15. GetBaseName" GetBaseName
  602.     StrCmp $STATE "16. GetFileExt" GetFileExt
  603.     StrCmp $STATE "17. BannerTrimPath" BannerTrimPath
  604.     StrCmp $STATE "18. DirState" DirState
  605.     StrCmp $STATE "19. RefreshShellIcons" RefreshShellIcons
  606.     Abort
  607.  
  608.     Locate:
  609.     ${Locate} "$R2" "$R3" "LocateCallback"
  610.     IfErrors error
  611.     StrCmp $R0 StopLocate 0 +3
  612.     StrCpy $R0 'stopped'
  613.     goto send
  614.     StrCpy $R0 'done'
  615.     goto send
  616.  
  617.     GetSize:
  618.     ${GetSize} "$R2" "$R3" $0 $1 $2
  619.     IfErrors error
  620.     StrCpy $R0 "Size=$0$\r$\nFiles=$1$\r$\nFolders=$2"
  621.     goto send
  622.  
  623.     DriveSpace:
  624.     ${DriveSpace} "$R1" "$R3" $0
  625.     IfErrors error
  626.     StrCpy $R0 "$0"
  627.     goto send
  628.  
  629.     GetDrives:
  630.     ${GetDrives} "$R1" "GetDrivesCallback"
  631.     StrCmp $R0 StopGetDrives 0 +3
  632.     StrCpy $R0 '$R5stopped'
  633.     goto send
  634.     StrCpy $R0 '$R5done'
  635.     goto send
  636.  
  637.     GetTime:
  638.     ${GetTime} "$R1" "$R3" $0 $1 $2 $3 $4 $5 $6
  639.     IfErrors error
  640.     StrCpy $R0 'Date=$0/$1/$2 ($3)$\r$\nTime=$4:$5:$6'
  641.     goto send
  642.  
  643.     GetFileAttributes:
  644.     ${GetFileAttributes} "$R1" "$R3" $0
  645.     IfErrors error
  646.     StrCpy $R0 '$0'
  647.     goto send
  648.  
  649.     GetFileVersion:
  650.     ${GetFileVersion} "$R1" $0
  651.     IfErrors error
  652.     StrCpy $R0  '$0'
  653.     goto send
  654.  
  655.     GetExeName:
  656.     ${GetExeName} $0
  657.     StrCpy $R0 '$0'
  658.     goto send
  659.  
  660.     GetExePath:
  661.     ${GetExePath} $0
  662.     StrCpy $R0 '$0'
  663.     goto send
  664.  
  665.     GetParameters:
  666.     ${GetParameters} $0
  667.     StrCpy $R0 '$0'
  668.     StrCmp $R0 '' 0 send
  669.     StrCpy $R0 'no parameters'
  670.     goto send
  671.  
  672.     GetOptions:
  673.     ${GetOptions} "$R1" "$R3" $0
  674.     IfErrors error
  675.     StrCpy $R0  '$0'
  676.     goto send
  677.  
  678.     GetRoot:
  679.     ${GetRoot} "$R1" $0
  680.     StrCpy $R0  '$0'
  681.     goto send
  682.  
  683.     GetParent:
  684.     ${GetParent} "$R1" $0
  685.     StrCpy $R0  '$0'
  686.     goto send
  687.  
  688.     GetFileName:
  689.     ${GetFileName} "$R1" $0
  690.     StrCpy $R0  '$0'
  691.     goto send
  692.  
  693.     GetBaseName:
  694.     ${GetBaseName} "$R1" $0
  695.     StrCpy $R0  '$0'
  696.     goto send
  697.  
  698.     GetFileExt:
  699.     ${GetFileExt} "$R1" $0
  700.     StrCpy $R0  '$0'
  701.     goto send
  702.  
  703.     BannerTrimPath:
  704.     ${BannerTrimPath} "$R1" "$R3" $0
  705.     StrCpy $R0  '$0'
  706.     goto send
  707.  
  708.     DirState:
  709.     ${DirState} "$R2" $0
  710.     StrCpy $R0  '$0'
  711.     goto send
  712.  
  713.     RefreshShellIcons:
  714.     ${RefreshShellIcons}
  715.     StrCpy $R0 'done'
  716.     goto send
  717.  
  718.     error:
  719.     StrCpy $R0 'error'
  720.  
  721.     send:
  722.     GetDlgItem $1 $HWND 1208
  723.     SendMessage $1 ${WM_SETTEXT} 1 "STR:$R0"
  724.  
  725.     abort
  726. FunctionEnd
  727.  
  728. Function LocateCallback
  729.     MessageBox MB_OKCANCEL '$$R9    "path\name"=[$R9]$\n$$R8    "path"          =[$R8]$\n$$R7    "name"        =[$R7]$\n$$R6    "size"           =[$R6]' IDOK +2
  730.     StrCpy $R0 StopLocate
  731.  
  732.     Push $R0
  733. FunctionEnd
  734.  
  735. Function GetDrivesCallback
  736.     MessageBox MB_OKCANCEL '$$9    "drive letter"=[$9]$\n$$8    "drive type" =[$8]' IDOK +2
  737.     StrCpy $R0 StopGetDrives
  738.     StrCpy $R5 '$R5$9  [$8 Drive]$\r$\n'
  739.  
  740.     Push $R0
  741. FunctionEnd
  742.  
  743. Function .onInit
  744.     InitPluginsDir
  745.     GetTempFileName $INI $PLUGINSDIR
  746.     File /oname=$INI "FileFunc.ini"
  747. FunctionEnd
  748.  
  749. Page instfiles
  750.  
  751. Section "Empty"
  752. SectionEnd
  753.